

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<base target="_top">
<style type="text/css">
  

/* default css */

table {
  font-size: 1em;
  line-height: inherit;
  border-collapse: collapse;
}


tr {
  
  text-align: left;
  
}


div, address, ol, ul, li, option, select {
  margin-top: 0px;
  margin-bottom: 0px;
}

p {
  margin: 0px;
}


pre {
  font-family: Courier New;
  white-space: pre-wrap;
  margin:0;
}

body {
  margin: 6px;
  padding: 0px;
  font-family: Verdana, sans-serif;
  font-size: 10pt;
  background-color: #ffffff;
  color: #000;
}


img {
  -moz-force-broken-image-icon: 1;
}

@media screen {
  html.pageview {
    background-color: #f3f3f3 !important;
    overflow-x: hidden;
    overflow-y: scroll;
  }

  

  body {
    min-height: 1100px;
    
    counter-reset: __goog_page__;
  }
  
  * html body {
    height: 1100px;
  }
  /* Prevent repaint errors when scrolling in Safari. This "Star-7" css hack
     targets Safari 3.1, but not WebKit nightlies and presumably Safari 4.
     That's OK because this bug is fixed in WebKit nightlies/Safari 4 :-). */
  html*#wys_frame::before {
    content: '\A0';
    position: fixed;
    overflow: hidden;
    width: 0;
    height: 0;
    top: 0;
    left: 0;
  }
  
  .pageview body {
    border-top: 1px solid #ccc;
    border-left: 1px solid #ccc;
    border-right: 2px solid #bbb;
    border-bottom: 2px solid #bbb;
    width: 648px !important;
    margin: 15px auto 25px;
    padding: 40px 50px;
  }
  /* IE6 */
  * html {
    overflow-y: scroll;
  }
  * html.pageview body {
    overflow-x: auto;
  }
  

  
    
    
    .writely-callout-data {
      display: inline-block;
      width: 1px;
      height: 1px;
      overflow: hidden;
      margin-left: -1px;
    }
    

    .writely-footnote-marker {
      background-image: url('MISSING');
      background-color: transparent;
      background-repeat: no-repeat;
      width: 7px;
      overflow: hidden;
      height: 16px;
      vertical-align: top;

      
      -moz-user-select: none;
    }
    .editor .writely-footnote-marker {
      cursor: move;
    }
    .writely-footnote-marker-highlight {
      background-position: -15px 0;
      -moz-user-select: text;
    }
    .writely-footnote-hide-selection ::-moz-selection, .writely-footnote-hide-selection::-moz-selection {
      background: transparent;
    }
    .writely-footnote-hide-selection ::selection, .writely-footnote-hide-selection::selection {
      background: transparent;
    }
    .writely-footnote-hide-selection {
      cursor: move;
    }

    /* Comments */
    .writely-comment-yellow {
      background-color: #ffffd7;
    }
    .writely-comment-orange {
      background-color: #ffe3c0;
    }
    .writely-comment-pink {
      background-color: #ffd7ff;
    }
    .writely-comment-green {
      background-color: #d7ffd7;
    }
    .writely-comment-blue {
      background-color: #d7ffff;
    }
    .writely-comment-purple {
      background-color: #eed7ff;
    }

  


  
  .br_fix span+br:not(:-moz-last-node) {
    
    position:relative;
    
    left: -1ex
    
  }

  
  #cb-p-tgt {
    font-size: 8pt;
    padding: .4em;
    background-color: #ddd;
    color: #333;
  }
  #cb-p-tgt-can {
    text-decoration: underline;
    color: #36c;
    font-weight: bold;
    margin-left: 2em;
  }
  #cb-p-tgt .spin {
    width: 16px;
    height: 16px;
    background: url(//ssl.gstatic.com/docs/clipboard/spin_16o.gif) no-repeat;
  }
}

h6 { font-size: 8pt }
h5 { font-size: 8pt }
h4 { font-size: 10pt }
h3 { font-size: 12pt }
h2 { font-size: 14pt }
h1 { font-size: 18pt }

blockquote {padding: 10px; border: 1px #DDD dashed }

.webkit-indent-blockquote { border: none; }

a img {border: 0}

.pb {
  border-width: 0;
  page-break-after: always;
  /* We don't want this to be resizeable, so enforce a width and height
     using !important */
  height: 1px !important;
  width: 100% !important;
}

.editor .pb {
  border-top: 1px dashed #C0C0C0;
  border-bottom: 1px dashed #C0C0C0;
}

div.google_header, div.google_footer {
  position: relative;
  margin-top: 1em;
  margin-bottom: 1em;
}


/* Table of contents */
.editor div.writely-toc {
  background-color: #f3f3f3;
  border: 1px solid #ccc;
}
.writely-toc > ol {
  padding-left: 3em;
  font-weight: bold;
}
ol.writely-toc-subheading {
  padding-left: 1em;
  font-weight: normal;
}
/* IE6 only */
* html writely-toc ol {
  list-style-position: inside;
}
.writely-toc-none {
  list-style-type: none;
}
.writely-toc-decimal {
  list-style-type: decimal;
}
.writely-toc-upper-alpha {
  list-style-type: upper-alpha;
}
.writely-toc-lower-alpha {
  list-style-type: lower-alpha;
}
.writely-toc-upper-roman {
  list-style-type: upper-roman;
}
.writely-toc-lower-roman {
  list-style-type: lower-roman;
}
.writely-toc-disc {
  list-style-type: disc;
}

/* Ordered lists converted to numbered lists can preserve ordered types, and
   vice versa. This is confusing, so disallow it */
ul[type="i"], ul[type="I"], ul[type="1"], ul[type="a"], ul[type="A"] {
  list-style-type: disc;
}

ol[type="disc"], ol[type="circle"], ol[type="square"] {
  list-style-type: decimal;
}

/* end default css */


  /* default print css */
  @media print {
    body {
      padding: 0;
      margin: 0;
    }

    div.google_header, div.google_footer {
      display: block;
      min-height: 0;
      border: none;
    }

    div.google_header {
      flow: static(header);
    }

    /* used to insert page numbers */
    div.google_header::before, div.google_footer::before {
      position: absolute;
      top: 0;
    }

    div.google_footer {
      flow: static(footer);
    }

    /* always consider this element at the start of the doc */
    div#google_footer {
      flow: static(footer, start);
    }

    span.google_pagenumber {
      content: counter(page);
    }

    span.google_pagecount {
      content: counter(pages);
    }

    .endnotes {
      page: endnote;
    }

    /* MLA specifies that endnotes title should be 1" margin from the top of the page. */
    @page endnote {
      margin-top: 1in;
    }

    callout.google_footnote {
      
      display: prince-footnote;
      footnote-style-position: inside;
      /* These styles keep the footnote from taking on the style of the text
         surrounding the footnote marker. They can be overridden in the
         document CSS. */
      color: #000;
      font-family: Verdana;
      font-size: 10.0pt;
      font-weight: normal;
    }

    /* Table of contents */
    #WritelyTableOfContents a::after {
      content: leader('.') target-counter(attr(href), page);
    }

    #WritelyTableOfContents a {
      text-decoration: none;
      color: black;
    }

    /* Comments */
    .writely-comment-yellow {
      background-color: #ffffd7;
    }
    .writely-comment-orange {
      background-color: #ffe3c0;
    }
    .writely-comment-pink {
      background-color: #ffd7ff;
    }
    .writely-comment-green {
      background-color: #d7ffd7;
    }
    .writely-comment-blue {
      background-color: #d7ffff;
    }
    .writely-comment-purple {
      background-color: #eed7ff;
    }
  }

  @page {
    @top {
      content: flow(header);
    }
    @bottom {
      content: flow(footer);
    }
    @footnotes {
      border-top: solid black thin;
      padding-top: 8pt;
    }
  }
  /* end default print css */


/* custom css */


/* end custom css */

/* ui edited css */

body {
  font-family: Verdana;
  
  font-size: 10.0pt;
  line-height: normal;
  background-color: #ffffff;
}
/* end ui edited css */


/* editor CSS */
.editor a:visited {color: #551A8B}
.editor table.zeroBorder {border: 1px dotted gray}
.editor table.zeroBorder td {border: 1px dotted gray}
.editor table.zeroBorder th {border: 1px dotted gray}


.editor div.google_header, .editor div.google_footer {
  border: 2px #DDDDDD dashed;
  position: static;
  width: 100%;
  min-height: 2em;
}

.editor .misspell {background-color: yellow}

.editor .writely-comment {
  font-size: 9pt;
  line-height: 1.4;
  padding: 1px;
  border: 1px dashed #C0C0C0
}


/* end editor CSS */

</style>

  
  <title>LAB Documentation</title>

</head>

<body 
    
    >
    
    
    
<div class=writely-toc id=WritelyTableOfContents toctype=decimal+disc>
  <ol class=writely-toc-decimal>
    <li>
      <a href=#Introduction_7338517050435771__2507900044392434 target=_self>Introduction</a>
    </li>
    <li>
      <a href=#Getting_Started_26395304519151_9031753458864438 target=_self>Getting Started</a>
    </li>
    <ol class="writely-toc-disc writely-toc-subheading" style=MARGIN-LEFT:0pt>
      <li>
        <a href=#Initial_Network_Setup_90822276_5665041171108222 target=_self>Initial Network Setup</a>
      </li>
    </ol>
    <li>
      <a href=#Dashboard target=_self>Dashboard</a>
    </li>
    <li>
      <a href=#Installation target=_self>Installation</a>
    </li>
    <li>
      <a href=#Configuration_5152610947807292 target=_self>Configuration</a>
    </li>
    <ol class="writely-toc-disc writely-toc-subheading" style=MARGIN-LEFT:0pt>
      <li>
        <a href=#Network_Configuration_53075085_9792988607530262 target=_self>Network Configuration</a>
      </li>
      <ol class="writely-toc-disc writely-toc-subheading" style=MARGIN-LEFT:0pt>
        <li>
          <a href=#Network_Setup_3150350871018643_841888618495172 target=_self>Network Setup</a>
        </li>
        <li>
          <a href=#Static_Route_9630354033909183_ target=_self>Static Route</a>
        </li>
        <li>
          <a href=#DNS_6664737799911482_307112380 target=_self>DNS</a>
        </li>
      </ol>
    </ol>
    <li>
      <a href=#Monitoring_7409516893940488 target=_self>Monitoring</a>
    </li>
    <li>
      <a href=#Adding_custom_package_13348858320069956 target=_self>Adding custom package</a>
    </li>
    <ol class="writely-toc-disc writely-toc-subheading" style=MARGIN-LEFT:0pt>
      <li>
        <a href=#Adding_web_based_configuration_659012722309647 target=_self>Adding web-based configuration</a>
      </li>
    </ol>
    <li>
      <a href=#References_8178089493812924_17615594596139994 target=_self>References</a>
    </li>
  </ol>
</div>
<br>
<h2>
  <a id=Introduction_7338517050435771__2507900044392434 name=Introduction_7338517050435771__2507900044392434></a>Introduction
</h2>
<p>
  Linux Appliance Box (LAB) provides a JeOS to enable building of production ready appliances entirely using open-source software. It integrate some of best open-source software in the <b>Base Appliance</b> to provide the foundation to build high quality networking appliances. E.g. using the <b>Base Appliance</b> user could easily build a layer-7 load-balancer by adding an open-source software load-balancer like <a href=http://haproxy.1wt.eu id=rba5 title=HAProxy>HAProxy</a> or by building your own custom load-balancing software. The Base appliance comes built-in with full monitoring and web-based configuration, so users can get started&nbsp;
</p>
<p>
  <br>
</p>
<p>
</p>
<p>
  All the instruction here are for the Base Appliance.
</p>
<br>
<p>
</p>
<h2>
  <a id=Getting_Started_26395304519151_9031753458864438 name=Getting_Started_26395304519151_9031753458864438></a>Getting Started
</h2>
<p>
  All the appliances provided by LAB are Live CD system so you can simply boot off the CD and have a running appliance quickly. Download the appliance that fits your hardware from <a href=http://sourceforge.net/projects/labb/files/ id=vqcc title=Download>here</a>. You can choose between a 32-bit or 64-bit install. Make sure you burn the iso on the CD as a bootable image. Details on burning a bootable CD are beyond the scope of this document but there are several sites online that provide the help. Please refer to the <a href=#References id=ki0l target=_self title=Reference>Reference</a> Section. The Default image is setup to get the IP address from DHCP. If you don't have a DHCP server on the network then the network setup will have to be done manually to use the appliance.
</p>
<p>
  <br>
</p>
<h3>
  <a id=Initial_Network_Setup_90822276_5665041171108222 name=Initial_Network_Setup_90822276_5665041171108222></a>Initial Network Setup
</h3>
To manually set the network on the appliance you can use the command-line interface on the console.<br>
<br>
<blockquote>
  <p>
    ifconfig &lt;interface&gt; &lt;ipaddress&gt; netmask &lt;mask&gt; up
  </p>
  <p>
    route add default gw &lt;default gateway&gt;
  </p>
</blockquote>
<br>
Once the appliance is on the network you can do the rest of the configuration using the web-interface. The web-interface provides an easy way configure the appliance. The web-interface only allows secure HTTPS access with basic access control. To access the web-interface go to https://&lt;appliance ip&gt;:4443. The web-interface will ask for login credential. The default username/password are <i><b>admin/labb</b></i>.<br>
<br>
<div id=wxki style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_40ctt5hzg9_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_40ctt5hzg9_b.png><img src="images/dgmfv4cm_40ctt5hzg9_b.png" style=HEIGHT:444.031008px;WIDTH:640px></a>
</div>
<br>
<br>
<h2>
  <a id=Dashboard name=Dashboard></a>Dashboard
</h2>
The landing page of the web-interface provides a dashboard view of the system. It provides basic information about the system like the version, system time, uptime, etc. The health of the system is also available on the dashboard with a brief description of the problem when there is one. The bottom half of the dashboard is used as a system monitoring section with certain vital statistical data presented as a graph with a historical data upto an year. The monitoring system uses the <a href=http://collectd.org/ id=diro title=collectd>collectd</a> monitoring daemon alongwith the <a href=http://oss.oetiker.ch/rrdtool/ id=n73b title=RRDtool>RRDtool</a> as a storage and graphing tool to present the data. More details on additional monitoring parameters can be found in the <a href=#Monitoring id=xbta target=_self title=Monitoring>Monitoring</a> section.<br>
<br>
<br>
<div style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_33cf852wd6_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_33cf852wd6_b.png><img src="images/dgmfv4cm_33cf852wd6_b.png" style=HEIGHT:444.031008px;WIDTH:640px></a>
</div>
<br>
<br>
<h2>
  <a id=Installation name=Installation></a>Installation
</h2>
By default the Base Appliance run off the install media (CDROM) so if you make any changes to the configuration it won't be retained after reboots. To save the configuration permanently you will have to install the appliance on the hard-drive. Go to the Installation section on the web-interface.<br>
Select the hard-drive you want to install the appliance on and click <b>Install</b>.<br>
<br>
<font size=1><b><font size=2>NOTE: Installation will wipe out any data on the hard-drive so make sure you don't need any data on the hard-drive.</font><br>
</b></font><br>
<div id=su8o style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_34dd649bdm_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_34dd649bdm_b.png><img src="images/dgmfv4cm_34dd649bdm_b.png" style=HEIGHT:444.031008px;WIDTH:640px></a>
</div>
<br>
<br>
The installation process takes a few minutes to complete and it will repartition the disk and install the appliance files on the hard-drive. After rebooting the system the appliance becomes like a regular Linux install only smaller.<br>
<br>
<br>
<a href=http://www.linuxappliancebox.com/images/dgmfv4cm_35hq3tk5ff_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_35hq3tk5ff_b.png><img src="images/dgmfv4cm_35hq3tk5ff_b.png" style=FLOAT:left;HEIGHT:277.51938px;MARGIN-LEFT:1em;MARGIN-RIGHT:0pt;WIDTH:400px></a>
<div id=nyy- style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_36hgrbx6c5_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_36hgrbx6c5_b.png><img src="images/dgmfv4cm_36hgrbx6c5_b.png" style=HEIGHT:277.51938px;WIDTH:400px></a>
</div>
<br>
<br>
<h2>
  <a id=Configuration_5152610947807292 name=Configuration_5152610947807292></a>Configuration
</h2>
Most of the configuration options provided on the web-interface are self-explanatory, so we will go through them quickly.<br>
<br>
<h3>
  <a id=Network_Configuration_53075085_9792988607530262 name=Network_Configuration_53075085_9792988607530262></a>Network Configuration
</h3>
The network configuration provided by the web-interface makes use of the standard Fedora networking files in /etc/sysconfig/network-scripts and the network script to setup the network. The web-interface simplifies the task by only setting the configuration files correctly and then calling the network startup script. This will also take care of setting up the network on boot-up.<br>
<br>
<div style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_37gsbg36gr_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_37gsbg36gr_b.png><img src="images/dgmfv4cm_37gsbg36gr_b.png" style=HEIGHT:444.031008px;WIDTH:640px></a>
</div>
<br>
<br>
<h4>
  Network Setup
</h4>
Sets up the network configuration for the appliance. You can set it up in the following modes:
<ul>
  <li>
    Router: It requires two interfaces and the appliance acts like router forwarding IP traffic from one interface to the other. This mode is mostly used in a setup like traffic shaping or traffic monitoring.<br>
  </li>
  <li>
    Bridge: This setup also requires two interfaces. In this mode the appliance acts like a bridging device forwarding packets between the two interfaces at the MAC layer.
  </li>
  <li>
    Server: In the server mode the appliance acts like an end-point server, accepting connections from clients. This mode is generally used to build a web server or a proxy server type appliance. In this mode the interface can be setup as a standalone interface or as a bonding interface to provide fault-tolerance. <b>NOTE:</b> We are working on adding support for other bonding modes like link aggregation and balance-rr.<br>
  </li>
</ul>
<br>
<h4>
  <a id=Static_Route_9630354033909183_ name=Static_Route_9630354033909183_></a>Static Route
</h4>
Adds static route the appliance. The entries are added in /etc/sysconfig/static-routes. The Fedora base network startup script will take care of adding the routes.<br>
<br>
<div id=ahdu style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_38hnbq8xgh_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_38hnbq8xgh_b.png><img src="images/dgmfv4cm_38hnbq8xgh_b.png" style=HEIGHT:444.031008px;WIDTH:640px></a>
</div>
<br>
<h4>
  <a id=DNS_6664737799911482_307112380 name=DNS_6664737799911482_307112380></a>DNS
</h4>
Adds primary, secondary and tertiary entries for domain name resolution. The servers are added to /etc/resolv.conf. Any custom services on the appliance that caches the value of the server must be forced to re-read the resolv.conf file.<br>
<br>
<div id=w5bp style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_39hfrjjddc_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_39hfrjjddc_b.png><img src="images/dgmfv4cm_39hfrjjddc_b.png" style=HEIGHT:444.031008px;WIDTH:640px></a>
</div>
<br>
<br>
<h2>
  <a id=Monitoring_7409516893940488 name=Monitoring_7409516893940488></a>Monitoring
</h2>
The monitoring system in the Base Appliance used the collectd monitoring daemon alongwith the RRDtool storage and graphing tools to present the monitoring data. The Monitoring section on the web-interface provides a simple interface to select and view whatever parameters you would like to monitor. This interface be used in addition to <a href=#Dashboard id=p7pa target=_self title=Dashboard>Dashboard</a> view to get details on the system performance.<br>
<br>
<div id=b:s7 style=TEXT-ALIGN:left>
  <a href=http://www.linuxappliancebox.com/images/dgmfv4cm_41wtp68b7p_b.png title=http://www.linuxappliancebox.com/images/dgmfv4cm_41wtp68b7p_b.png><img src="images/dgmfv4cm_41wtp68b7p_b.png" style=HEIGHT:444.031008px;WIDTH:640px></a>
</div>
<br>
<br>
<h2>
  <a id=Adding_custom_package_13348858320069956 name=Adding_custom_package_13348858320069956></a>Adding custom package
</h2>
<p>
  To create a custom appliance you can add your own packages on top of the Base appliance. The Base appliance supports adding of packages using the Redhat Package Manager (RPM).&nbsp; The package manager will only work when the Appliance is installed on the hard-drive. In version 0.1.0 of the Base Appliance the package manager is not part of the web-interface, so you need to use the command-line interface. To add a custom package simply run:
</p>
<p>
  <br>
</p>
<blockquote>
  <p>
    rpm -Uvh &lt;rpm package&gt;
  </p>
</blockquote>
<p>
</p>
<br>
<font size=2><b>NOTE: The Base Appliance provides a minimal install of the Linux OS, so it may not have all the needed libraries, binaries for the rpm to install. The package creator must take care of all the dependencies and install them prior to install the main packages or make all dependencies part of the same package.</b></font>
<p>
</p>
<br>
<br>
<h2>
  <a id=References_8178089493812924_17615594596139994 name=References_8178089493812924_17615594596139994></a>References
</h2>
<ol>
  <li>
    http://oss.oetiker.ch/rrdtool/
  </li>
  <li>
    http://collectd.org/
  </li>
  <li>
    http://www.damnsmalllinux.org/wiki/index.php/Burning_a_Bootable_CD
  </li>
</ol>
<br></body>
</html>